package stringobject;

public class ObjectDemo {
    public static void main(String[] args) {
        /*
        输出引用变量时默认调用Object类的toString()方法
        该方法返回的字符串格式为:类的全称@hashcode值
        但通常这个返回结果对我们的开发是没有意义的
        我们真正想输出的应该是对象的属性值
        我们认为Object类的toString()并不能满足需求
        因此我们常常重写toString()返回具体的属性值

        Point point = new Point(100,200);
        System.out.println(point);
        System.out.println(point.toString());
         */
        /*
        调用Object类的equals(),内部还是在使用==比较地址,没有参考意义
        若想比较对象的属性是否相同,我们认为Object类的equals()并不能满足
        因此常常需要重写equals
         */
        Point p1 = new Point(100,200);
        Point p2 = new Point(100,200);
        System.out.println(p1==p2);//false,==比较的是地址
        System.out.println(p1.equals(p2));//false,equals()方法重写后显示true

        String s1=new String("hello");
        String s2=new String("hello");
        System.out.println(s1.equals(s2));//true,因为String重写了equals()方法

        StringBuilder builder1=new StringBuilder("hello");
        StringBuilder builder2=new StringBuilder("hello");
        System.out.println(builder1.equals(builder2));//false,因为StringBuilder没有重写equals()方法















    }
    Dog dog=new Dog();
    Animals animals=new Dog();
    Object object=new Dog();
}
class Animals{}//默认继承Object类
class Dog extends Animals{}